package 
{
	
	import controller.ApplicationStartupCommand;
	import controller.anneeEtude.*;
	import controller.droitUtilisateur.*;
	import controller.edtEnseignant.ObtenirListeSeancesEnseignantCommand;
	import controller.enseignant.*;
	import controller.enseignement.*;
	import controller.formation.*;
	import controller.groupe.*;
	import controller.login.*;
	import controller.profilEnseignant.*;
	import controller.salle.*;
	import controller.seance.*;
	import controller.semestre.*;
	import controller.service.*;
	import controller.anneeUniversitaire.*;
	
	import org.puremvc.as3.patterns.facade.Facade;
	
	import view.components.*;
	import view.components.calendar.CalendarEditionPanel;
	import view.components.calendar.CalendarPanel;
	
	public class ApplicationFacade extends Facade 
	{ 
		public static const NAME : String = 'ApplicationFacade'; 
		public static const SERVEUR : String = "http://162.38.111.109/LucyID_serveur/amfphp/gateway.php";
		
		public static const STARTUP : String = "Startup"; 		 
	
		/** 
		* Constructor 
		*/ 
		public function ApplicationFacade() 
		{ 
			super(); 
		}
		
		/** 
		* Get an instance of our application facade 
		*/ 
		public static function getInstance() : ApplicationFacade 
		{ 
		 	if (instance == null) instance = new ApplicationFacade(); 
		 	return instance as ApplicationFacade; 
		}
		
		/** 
		* Initialize the differents controller (register commands/controllers) 
		*/ 
		override protected function initializeController() : void 
		{ 
			super.initializeController(); 
			registerCommand(STARTUP, ApplicationStartupCommand); 
			registerCommand(FormationPanel.VALIDER_AJOUT_FORMATION, ValiderAjoutFormationCommand);
			registerCommand(FormationPanel.VALIDER_MODIF_FORMATION, ValiderModifFormationCommand);
			registerCommand(FormationPanel.OBTENIR_LISTE_FORMATIONS, ObtenirListeFormationsCommand);
			registerCommand(FormationPanel.SUPPRIMER_FORMATION, SupprimerFormationCommand);
			
			registerCommand(GroupePanel.SUPPRIMER_GROUPE, SupprimerGroupeCommand); 
			registerCommand(GroupePanel.VALIDER_AJOUT_GROUPE, ValiderAjoutGroupeCommand);
			registerCommand(GroupePanel.VALIDER_MODIF_GROUPE, ValiderModifGroupeCommand);
			registerCommand(GroupePanel.OBTENIR_LISTE_ANNEES_ETUDE_GROUPE, ObtenirListeAnneesEtudeGroupeCommand);
			registerCommand(GroupePanel.OBTENIR_LISTE_GROUPES, ObtenirListeGroupesCommand);
			registerCommand(GroupePanel.OBTENIR_LISTE_TYPES_ENSEIGNEMENT, ObtenirListeTypesEnseignementGroupeCommand);
			registerCommand(GroupePanel.OBTENIR_LISTE_GROUPES_INCOMPATIBLES, ObtenirListeGroupesIncompatiblesCommand);
			registerCommand(GroupePanel.OBTENIR_LISTE_ANNEES_UNIVERSITAIRE_GROUPE, ObtenirListeAnneesUniversitaireGroupeCommand);
			
			registerCommand(LoginPanel.IDENT, IdentificationCommand);

			registerCommand(CalendarPanel.OBTENIR_LISTE_SEANCES, ObtenirListeSeancesCommand);
			registerCommand(CalendarPanel.CREER_SEANCE, CreerSeanceCommand);
			registerCommand(CalendarPanel.MODIFIER_SEANCE, ModifierSeanceCommand);
			registerCommand(CalendarPanel.SUPPRIMER_SEANCE, SupprimerSeanceCommand);
			registerCommand(CalendarPanel.PUBLIER_SEANCE, PublierSemaineCommand);
			registerCommand(CalendarEditionPanel.OBTENIR_LISTE_MATIERES_CALENDAR, ObtenirListeMatieresSeanceCommand);
			registerCommand(CalendarEditionPanel.OBTENIR_LISTE_SERVICES_CALENDAR, ObtenirListeServicesSeanceCommand);
			registerCommand(CalendarEditionPanel.OBTENIR_LISTE_GROUPES_CALENDAR, ObtenirListeGroupesSeanceCommand);
			registerCommand(CalendarEditionPanel.OBTENIR_LISTE_SALLES_CALENDAR, ObtenirListeSallesSeanceCommand);
			
			registerCommand(EdtEnseignantPanel.OBTENIR_LISTE_SEANCES_ENSEIGNANT, ObtenirListeSeancesEnseignantCommand);
			
			registerCommand(EnseignementPanel.OBTENIR_LISTE_ANNEES_ETUDE_ENSEIGNEMENT, ObtenirListeAnneesEtudeEnseignementCommand);
			registerCommand(EnseignementPanel.OBTENIR_LISTE_ENSEIGNEMENTS, ObtenirListeEnseignementsCommand);
			registerCommand(EnseignementPanel.OBTENIR_LISTE_TYPES_ENSEIGNEMENT, ObtenirListeTypesEnseignementCommand);
			registerCommand(EnseignementPanel.OBTENIR_LISTE_MATIERES, ObtenirListeMatieresEnseignementCommand);
			registerCommand(EnseignementPanel.VALIDER_AJOUT_ENSEIGNEMENT, ValiderAjoutEnseignementCommand);
			registerCommand(EnseignementPanel.VALIDER_MODIF_ENSEIGNEMENT, ValiderModifEnseignementCommand);
			registerCommand(EnseignementPanel.SUPPRIMER_ENSEIGNEMENT, SupprimerEnseignementCommand);
			registerCommand(EnseignementPanel.OBTENIR_LISTE_ANNEES_UNIV_ENSEIGNEMENT, ObtenirListeAnneesUnivEnseignementCommand);
			
			registerCommand(AnneeEtudePanel.OBTENIR_LISTE_ANNEES_UNIVERSITAIRE_ETUDE, ObtenirListeAnneesUniversitaireEtudeCommand);
			registerCommand(AnneeEtudePanel.OBTENIR_LISTE_ANNEES_ETUDE, ObtenirListeAnneesEtudeCommand);
			registerCommand(AnneeEtudePanel.OBTENIR_LISTE_ENSEIGNANTS_ETUDE, ObtenirListeEnseignantsEtudeCommand);
			registerCommand(AnneeEtudePanel.OBTENIR_LISTE_FORMATIONS_ETUDE, ObtenirListeFormationsEtudeCommand);
			registerCommand(AnneeEtudePanel.VALIDER_AJOUT_ANNEES_ETUDE, ValiderAjoutAnneeEtudeCommand);
			registerCommand(AnneeEtudePanel.VALIDER_MODIF_ANNEES_ETUDE, ValiderModifAnneeEtudeCommand);
			registerCommand(AnneeEtudePanel.SUPPRIMER_ANNEES_ETUDE, SupprimerAnneeEtudeCommand);
			
			registerCommand(SallePanel.VALIDER_AJOUT_SALLE, ValiderAjoutSalleCommand);
			registerCommand(SallePanel.VALIDER_MODIF_SALLE, ValiderModifSalleCommand);
			registerCommand(SallePanel.OBTENIR_LISTE_SALLES, ObtenirListeSallesCommand);
			registerCommand(SallePanel.SUPPRIMER_SALLE, SupprimerSalleCommand);
			
			registerCommand(SemestrePanel.OBTENIR_LISTE_ANNEESUNIVERSITAIRE, ObtenirListeAnneesUniversitaireSemestreCommand);
			registerCommand(SemestrePanel.OBTENIR_LISTE_ANNEES_ETUDE_SEMESTRE, ObtenirListeAnneesEtudeSemestreCommand);
			registerCommand(SemestrePanel.OBTENIR_LISTE_SEMESTRE, ObtenirListeSemestreCommand);			
			registerCommand(SemestrePanel.VALIDER_AJOUT_UE_SEMESTRE, ValiderSemestreCommand);
			registerCommand(SemestrePanel.VALIDER_MODIF_UE_SEMESTRE, ModifierSemestreCommand);
			registerCommand(SemestrePanel.OBTENIR_LISTE_MATIERES, ObtenirListeMatieresSemestreCommand);
			registerCommand(SemestrePanel.OBTENIR_LISTE_MATIERES_ASS, ObtenirListeMatieresSemestreAssCommand);
			registerCommand(SemestrePanel.SUPPRIMER_UE_SEMESTRE, SupprimerUESemestreCommand);
			registerCommand(SemestrePanel.VALIDER_AJOUT_MATIERE, AjouterMatiereCommand);
			registerCommand(SemestrePanel.VALIDER_MODIF_MATIERE, ModifierMatiereCommand);
			registerCommand(SemestrePanel.VALIDER_MODIF_MATIERE_ASS, ModifierMatiereAssCommand);
			registerCommand(SemestrePanel.SUPPRIMER_MATIERE, SupprimerMatiereCommand);
			registerCommand(SemestrePanel.SUPPRIMER_MATIERE_ASS, SupprimerMatiereAssCommand);
			registerCommand(SemestrePanel.DRAG_AND_DROP_UE, DragAndDropUeCommand);
			
			registerCommand(EnseignantPanel.OBTENIR_LISTE_ENSEIGNANTS, ObtenirListeEnseignantsCommand);
			registerCommand(EnseignantPanel.OBTENIR_LISTE_STATUTS_ENSEIGNANT, ObtenirListeStatutsEnseignantCommand);
			registerCommand(EnseignantPanel.VALIDER_AJOUT_ENSEIGNANT, ValiderAjoutEnseignantCommand);
			registerCommand(EnseignantPanel.VALIDER_MODIF_ENSEIGNANT, ValiderModifEnseignantCommand);
			registerCommand(EnseignantPanel.SUPPRIMER_ENSEIGNANT, SupprimerEnseignantCommand);
			registerCommand(EnseignantPanel.OBTENIR_LISTE_FORMATIONS_ENSEIGNANT, ObtenirListeFormationsEnseignantCommand);
			
			registerCommand(ProfilEnseignantPanel.VALIDER_MODIF_INFORMATIONS, ValiderModifInformationsCommand);
			
			registerCommand(DroitUtilisateurPanel.OBTENIR_LISTE_USERS, ObtenirListeUsersCommand);
			registerCommand(DroitUtilisateurPanel.OBTENIR_LISTE_ALL_AN_ETUDE, ObtenirListeAllAnEtudeCommand);
			registerCommand(DroitUtilisateurPanel.VALIDER_MODIF_USER, ModifierUtilisateur);
	
			registerCommand(ServicePanel.OBTENIR_LISTE_ANNEES_UNIVERSITAIRE_SERVICE, ObtenirListeAnneesUniversitaireServiceCommand);
			registerCommand(ServicePanel.OBTENIR_LISTE_ENSEIGNEMENTS_SERVICE, ObtenirListeEnseignementsServiceCommand);
			registerCommand(ServicePanel.OBTENIR_LISTE_ANNEES_ETUDE_SERVICE, ObtenirListeAnneesEtudeServiceCommand);
			registerCommand(ServicePanel.OBTENIR_LISTE_ENSEIGNANTS_SERVICE, ObtenirListeEnseignantsServiceCommand);
			registerCommand(ServicePanel.OBTENIR_LISTE_SERVICES, ObtenirListeServicesCommand);
			registerCommand(ServicePanel.VALIDER_AJOUT_SERVICE, ValiderAjoutServiceCommand);
			registerCommand(ServicePanel.VALIDER_MODIF_SERVICE, ValiderModifServiceCommand);
			
			registerCommand(ServicePanel.SUPPRIMER_SERVICE, SupprimerServiceCommand);
			registerCommand(AnneeUniversitairePanel.VALIDER_AJOUT_ANNEE_UNIVERSITAIRE, ValiderAjoutAnneeUniversitaireCommand);
			registerCommand(AnneeUniversitairePanel.OBTENIR_LISTE_ANNEES_UNIVERSITAIRE, ObtenirListeAnneesUniversitaireCommand);
			registerCommand(AnneeUniversitairePanel.OBTENIR_LISTE_JOURS_FERIES_ANNEE_UNIV, ObtenirListeJoursFeriesAnneeUnivCommand);
		}
		 
		/** 
		* Sartup (send notification of startup) 
		*/ 
		public function startup(app : LucyID) : void 
		{ 
			sendNotification(STARTUP, app); 
		} 
	}
}
